home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2006 March / PCWMAR06.iso / Software / Full / Canvas 8 / Canvas8 / HelpEngine.Cab / F21449_contents.js < prev    next >
Encoding:
JavaScript  |  2002-03-11  |  20.5 KB  |  624 lines

  1.  
  2. //-------------------------------------------------------------------------------
  3.  
  4. // global variable.
  5. var gNodeList = new Array;
  6. var gCurrImageObj = null;
  7. var gnTOP_POS = 16;
  8. var gnTop = gnTOP_POS;
  9. var gnHiddenTop = gnTOP_POS;
  10. var gBrowser = 0;
  11. var IE = 1;
  12. var NN = 2;
  13. var gsName = "bookmark";
  14.  
  15. var gsTarget = "_blank";
  16.  
  17. var gBlankImg = new Image;
  18. var gVertLineImg = new Image;
  19. var gNodeImg = new Image;
  20. var gLastNodeImg = new Image;
  21.  
  22. var gCloseFileImg = new Array;
  23. var gOpenFileImg = new Array;
  24. var gFileImg = new Array;
  25.  
  26. gCloseFileImg[0] = new Image;
  27. gCloseFileImg[1] = new Image;
  28. gOpenFileImg[0] = new Image;
  29. gOpenFileImg[1] = new Image;
  30. gFileImg[0] = new Image;
  31. gFileImg[1] = new Image;
  32.  
  33.  
  34. //-------------------------------------------------------------------------------
  35.  
  36. function list(sTitle, nDstPage, nEndPage, sURL, nID)
  37. {
  38.    this.sTitle = sTitle;
  39.    this.nDstPage = nDstPage;
  40.    this.nEndPage = nEndPage;
  41.    this.bExpanded = false;
  42.    this.bShow = false;
  43.    this.parent = null;
  44.    this.children = new Array;
  45.    this.objectID = null;
  46.    this.imageID = null;
  47.  
  48.    this.sURL = sURL;
  49.    this.nID = nID;
  50. }
  51.  
  52. //-------------------------------------------------------------------------------
  53.  
  54. function appendList(parentNode, childNode)
  55. {
  56.    childNode.parent = parentNode;
  57.    parentNode.children[parentNode.children.length] = childNode;
  58.  
  59.    return childNode;
  60. }
  61.                     
  62. function displayListx(nodeList, nDepth)
  63.     {
  64.     var i, j, k;
  65.     var parentNode, grandParentNode;
  66.  
  67.     for(i=0; i<nodeList.length; i++)
  68.         {
  69.         if(nodeList[i].nDstPage > -2)
  70.             document.write('<a href="#" onClick="JavaScript:openPageAbs(' + nodeList[i].nDstPage + ', image' + nodeList[i].nID + '); return false">');
  71.         else
  72.             document.write('<a href="' + nodeList[i].sURL + '" target=' + gsTarget + '>');
  73.         document.write('<font size=2 color="blue" face="Helvetica">' + nodeList[i].sTitle + '</font>');
  74.         document.write('</a>');
  75.  
  76.         for (j=0; j<nodeList[i].children.length;j++)
  77.             {
  78.             document.writeln(nodeList[i].children[j].sTitle + "<BR>");
  79.             }
  80.         }
  81.  
  82.     }
  83.  
  84. //-------------------------------------------------------------------------------
  85. // this is a recursive function.
  86.  
  87. function displayList(nodeList, nDepth)
  88. {
  89.    var i, j, k;
  90.    var parentNode, grandParentNode;
  91.    var statusCnt=0;
  92.    var statusStr="Working";
  93.  
  94.    for(i = 0; i < nodeList.length; i++)
  95.    {
  96.       // DISPLAY STATUS...
  97.       if(!statusCnt) 
  98.          {
  99.         statusStr+=".";
  100.         window.status=statusStr;
  101.         }
  102.       statusCnt=(statusCnt+1)%5;
  103.  
  104.  
  105.       if (nodeList[i].sTitle.substr(0,1) == '<')
  106.       {
  107.         document.write(nodeList[i].sTitle);
  108.         continue;
  109.       }
  110.  
  111.       if(gBrowser == IE)
  112.       {
  113.          if(nodeList[i].children.length > 0)
  114.             document.write('<span id="node' + nodeList[i].nID + '" style="display:');
  115.          else
  116.             document.write('<span id="child' + nodeList[i].nID + '" style="display:');
  117.  
  118.          if(nodeList[i].parent != null)
  119.             document.write('none">\n');
  120.          else
  121.             document.write('block">\n');
  122.       }
  123.       else if(gBrowser == NN)
  124.       {
  125.          if(nodeList[i].parent == null)
  126.          {
  127.             nodeList[i].bShow = true;
  128.  
  129.             if(i == 0 && nodeList[i].parent != null)
  130.                gnTop = gnTop + nodeList[i].parent.objectID.clip.height;
  131.             else if(i > 0)
  132.                gnTop = gnTop + nodeList[i - 1].objectID.clip.height;
  133.          }
  134.          else
  135.             nodeList[i].bShow = false;
  136.  
  137.          if(i == 0 && nodeList[i].parent != null)
  138.             gnHiddenTop = gnHiddenTop + nodeList[i].parent.objectID.clip.height;
  139.          else if(i > 0)
  140.             gnHiddenTop = gnHiddenTop + nodeList[i - 1].objectID.clip.height;
  141.  
  142.          if(nodeList[i].children.length > 0)
  143.             document.write('<layer id="node');
  144.          else
  145.             document.write('<layer id="child');
  146.  
  147.          if(nodeList[i].parent != null)
  148.             document.write(nodeList[i].nID + '" top=' + gnHiddenTop + ' visibility="hide">\n');
  149.          else
  150.             document.write(nodeList[i].nID + '" top=' + gnTop + ' visibility="show">\n');
  151.       }
  152.  
  153.  
  154.       document.write('<table border=0 cellspacing=0 cellpadding=0>\n<tr>\n');
  155.       document.write('<td  valign="left" nowrap>');
  156.  
  157.       for(j = nDepth - 1; j > 0; j--)
  158.       {
  159.          parentNode = nodeList[i];
  160.          for(k = j; k > 0; k--)
  161.             parentNode = parentNode.parent;
  162.  
  163.          grandParentNode = parentNode.parent;
  164.  
  165.          if(grandParentNode.children[grandParentNode.children.length - 1] == parentNode)
  166.             document.write('<img src="' + gBlankImg.src + '" border=0>');
  167.          else
  168.             document.write('<img src="' + gVertLineImg.src + '" border=0>');
  169.       }
  170.  
  171.       if(nDepth > 0)
  172.       {
  173.          if((i + 1) == nodeList.length)
  174.             document.write('<img src="' + gLastNodeImg.src + '" border=0>');
  175.          else
  176.             document.write('<img src="' + gNodeImg.src + '" border=0>');
  177.       }
  178.  
  179.       if(nodeList[i].children.length > 0 && gBrowser)
  180.       {
  181.          document.write('<a href="#" onClick="JavaScript:openNode(' + nodeList[i].nID + '); return false">');
  182.          document.write('<img src="' + gCloseFileImg[0].src + '" border=0 name="image' + nodeList[i].nID + '">');
  183.          document.write('</a>');
  184.       }
  185.       else
  186.          document.write('<img src="' + gFileImg[0].src + '" border=0 name="image' + nodeList[i].nID + '">');
  187.  
  188.       document.write('</td><td valign="middle" nowrap>');
  189.  
  190.       if(nodeList[i].nDstPage > -2)
  191.          document.write('<a href="#" onClick="JavaScript:openPageAbs(' + nodeList[i].nDstPage + ', image' + nodeList[i].nID + '); return false">');
  192.       else
  193.          document.write('<a href="' + nodeList[i].sURL + '" target=' + gsTarget + '>');
  194.  
  195.       document.write('<font size=2 color="blue" face="Helvetica">' + nodeList[i].sTitle + '</font>');
  196.       document.write('</a>');
  197.       document.write('</td>');
  198.       document.write('</tr>\n</table>\n');
  199.  
  200.       if(gBrowser == IE)
  201.       {
  202.          document.write('</span>\n');
  203.  
  204.          if(nodeList[i].children.length > 0)
  205.             nodeList[i].objectID = document.all["node" + nodeList[i].nID]; 
  206.          else
  207.             nodeList[i].objectID = document.all["child" + nodeList[i].nID]; 
  208.  
  209.          nodeList[i].imageID = document.all["image" + nodeList[i].nID]; 
  210.       }
  211.       else if(gBrowser == NN)
  212.       {
  213.          document.write('</layer>\n');
  214.  
  215.          if(nodeList[i].children.length > 0)
  216.             nodeList[i].objectID = document.layers["node" + nodeList[i].nID]; 
  217.          else
  218.             nodeList[i].objectID = document.layers["child" + nodeList[i].nID]; 
  219.  
  220.          nodeList[i].imageID = nodeList[i].objectID.document.images[nodeList[i].objectID.document.images.length-1]; 
  221.       }
  222.  
  223.       if(nodeList[i].children.length > 0)
  224.          displayList(nodeList[i].children, nDepth + 1);
  225.    }
  226.  
  227.    window.status="";
  228. }
  229.  
  230. //-------------------------------------------------------------------------------
  231.  
  232. function openPageAbs(nPageNum, imageObj)
  233. {
  234.    if(nPageNum > 0)
  235.    {
  236.       changeSelectedIcon(imageObj);
  237.       parent.nav.openPageAbsNoUpdateContents(nPageNum);
  238.    }
  239.    else
  240.       alert("This link has no destination.");
  241. }
  242.  
  243. //-------------------------------------------------------------------------------
  244.  
  245. function openNode(nID)
  246. {
  247.    var node = searchNode(gNodeList, nID);
  248.    if(node == null)
  249.       return;
  250.  
  251.    if(node.bExpanded == false)
  252.    {
  253.       node.bExpanded = true;
  254.       expandNode(node.children)
  255.    }
  256.    else
  257.    {
  258.       node.bExpanded = false;
  259.       shrinkNode(node.children)
  260.    }
  261.  
  262.    changeExpandIcon(node.imageID, node.bExpanded);
  263.  
  264.    if(gBrowser == NN)
  265.    {
  266.       gnTop = gnTOP_POS;
  267.       adjustListPos(gNodeList);
  268.    }
  269. }
  270.  
  271. //-------------------------------------------------------------------------------
  272.  
  273. function expandNode(node)
  274. {
  275.    var i;
  276.  
  277.    for(i = 0; i < node.length; i++)
  278.    {
  279.       if(gBrowser == IE)
  280.       {
  281.          if(node[i].objectID.style.display == "none")
  282.             if(node[i].parent == null || node[i].parent.bExpanded == true)
  283.                node[i].objectID.style.display = "block";
  284.       }
  285.       else if(gBrowser == NN)
  286.       {
  287.          if(node[i].bShow == false)
  288.             if(node[i].parent != null && node[i].parent.bExpanded == true)
  289.                node[i].bShow = true;
  290.       }
  291.  
  292.       if(node[i].children.length > 0 && node[i].bExpanded == true)
  293.          expandNode(node[i].children);
  294.    }
  295. }
  296.  
  297. //-------------------------------------------------------------------------------
  298.  
  299. function shrinkNode(node)
  300. {
  301.    var i;
  302.  
  303.    for(i = 0; i < node.length; i++)
  304.    {
  305.       if(gBrowser == IE)
  306.       {
  307.          if(node[i].objectID.style.display == "block")
  308.             node[i].objectID.style.display = "none";
  309.       }
  310.       else if(gBrowser == NN)
  311.       {
  312.          if(node[i].bShow == true)
  313.             node[i].bShow = false;
  314.       }
  315.  
  316.       if(node[i].children.length > 0)
  317.          shrinkNode(node[i].children);
  318.    }
  319. }
  320.  
  321. //-------------------------------------------------------------------------------
  322.  
  323. function updateTree(nPageNum)
  324. {
  325.    var node = ProcessOpenedNode(gNodeList, nPageNum);
  326.  
  327.    if(gBrowser == NN)
  328.    {
  329.       gnTop = gnTOP_POS;
  330.       adjustListPos(gNodeList);
  331.    }
  332. }
  333.  
  334. //-------------------------------------------------------------------------------
  335. // this is a recursive function.
  336.  
  337. function ProcessOpenedNode(nodeList, nPageNum)
  338. {
  339.    var i, k;
  340.    var node;
  341.  
  342.    for(i = 0; i < nodeList.length; i++)
  343.    {
  344.       //if(nodeList[i].nDstPage == nPageNum)
  345.       if(nPageNum >= nodeList[i].nDstPage && nPageNum <= nodeList[i].nEndPage)
  346.       {
  347.          if(nodeList[i].children.length > 0)
  348.          {
  349.             node = ProcessOpenedNode(nodeList[i].children, nPageNum);
  350.  
  351.             if(node != null)
  352.             {
  353.                nodeList[i].bExpanded = true; // expand parent.
  354.                changeExpandIcon(nodeList[i].imageID, nodeList[i].bExpanded);
  355.  
  356.                for(k = 0; k < nodeList.length; k++)
  357.                {
  358.                   if(gBrowser == IE)
  359.                   {
  360.                      if(nodeList[k].objectID.style.display == "none")
  361.                         nodeList[k].objectID.style.display = "block";
  362.                   }
  363.                   else if(gBrowser == NN)
  364.                   {
  365.                      if(nodeList[k].bShow == false)
  366.                         nodeList[k].bShow = true;
  367.                   }
  368.                }
  369.                changeSelectedIcon(node.imageID);
  370.  
  371.                return node;
  372.             }
  373.          }
  374.  
  375.          for(k = 0; k < nodeList.length; k++)
  376.          {
  377.             if (nodeList[k].sTitle.substr(0,1) == '<')
  378.                 continue;
  379.                 
  380.             if(gBrowser == IE)
  381.             {
  382.                if(nodeList[k].objectID.style.display == "none")
  383.                   nodeList[k].objectID.style.display = "block";
  384.             }
  385.             else if(gBrowser == NN)
  386.             {
  387.                if(nodeList[k].bShow == false)
  388.                   nodeList[k].bShow = true;
  389.             }
  390.          }
  391.          changeSelectedIcon(nodeList[i].imageID);
  392.  
  393.          return nodeList[i];
  394.       }
  395.       else if(nodeList[i].children.length > 0)
  396.       {
  397.          node = ProcessOpenedNode(nodeList[i].children, nPageNum);
  398.  
  399.          if(node != null)
  400.          {
  401.             nodeList[i].bExpanded = true; // expand parent.
  402.             changeExpandIcon(nodeList[i].imageID, nodeList[i].bExpanded);
  403.  
  404.             for(k = 0; k < nodeList.length; k++)
  405.             {
  406.                if (nodeList[k].sTitle.substr(0,1) == '<')
  407.                     continue;
  408.                     
  409.                if(gBrowser == IE)
  410.                {
  411.                   if(nodeList[k].objectID.style.display == "none")
  412.                      nodeList[k].objectID.style.display = "block";
  413.                }
  414.                else if(gBrowser == NN)
  415.                {
  416.                   if(nodeList[k].bShow == false)
  417.                      nodeList[k].bShow = true;
  418.                }
  419.             }
  420.             changeSelectedIcon(node.imageID);
  421.  
  422.             return node;
  423.          }
  424.       }
  425.    }
  426.  
  427.    return null;
  428. }
  429.  
  430. //-------------------------------------------------------------------------------
  431. //-------------------------------------------------------------------------------
  432. //-------------------------------------------------------------------------------
  433. //-------------------------------------------------------------------------------
  434. //-------------------------------------------------------------------------------
  435.  
  436. function adjustListPos(nodeList)
  437. {
  438.    var i;
  439.  
  440.    for(i = 0; i < nodeList.length; i++)
  441.    {
  442.       if(nodeList[i].bShow == true)
  443.       {
  444.          if(i == 0 && nodeList[i].parent != null)
  445.             gnTop = gnTop + nodeList[i].parent.objectID.clip.height;
  446.          else if(i > 0)
  447.             gnTop = gnTop + nodeList[i - 1].objectID.clip.height;
  448.  
  449.          nodeList[i].objectID.moveTo(nodeList[i].objectID.left, gnTop)
  450.          nodeList[i].objectID.visibility = "show";
  451.       }
  452.       else
  453.          nodeList[i].objectID.visibility = "hide";
  454.  
  455.       if(nodeList[i].children.length > 0)
  456.          adjustListPos(nodeList[i].children);
  457.    }
  458. }
  459.  
  460. //-------------------------------------------------------------------------------
  461. //-------------------------------------------------------------------------------
  462. //-------------------------------------------------------------------------------
  463. //-------------------------------------------------------------------------------
  464. //-------------------------------------------------------------------------------
  465.  
  466. function changeExpandIcon(imageObj, bExpand)
  467. {
  468.    if(imageObj == null)
  469.       return;
  470.  
  471.    if(bExpand == true)
  472.    {
  473.       if(imageObj.src == gCloseFileImg[1].src)
  474.          imageObj.src = gOpenFileImg[1].src;
  475.       else
  476.          imageObj.src = gOpenFileImg[0].src;
  477.    }
  478.    else
  479.    {
  480.       if(imageObj.src == gOpenFileImg[1].src)
  481.          imageObj.src = gCloseFileImg[1].src;
  482.       else
  483.          imageObj.src = gCloseFileImg[0].src;
  484.    }
  485. }
  486.  
  487. //-------------------------------------------------------------------------------
  488.  
  489. function changeSelectedIcon(imageObj)
  490. {
  491.    if(imageObj != null)
  492.    {
  493.       if(imageObj.src == gCloseFileImg[0].src)
  494.          imageObj.src = gCloseFileImg[1].src;
  495.       else if(imageObj.src == gOpenFileImg[0].src)
  496.          imageObj.src = gOpenFileImg[1].src;
  497.       else if(imageObj.src == gFileImg[0].src)
  498.          imageObj.src = gFileImg[1].src;
  499.    }
  500.  
  501.    if(gCurrImageObj != null && gCurrImageObj != imageObj)
  502.    {
  503.       if(gCurrImageObj.src == gCloseFileImg[1].src)
  504.          gCurrImageObj.src = gCloseFileImg[0].src;
  505.       else if(gCurrImageObj.src == gOpenFileImg[1].src)
  506.          gCurrImageObj.src = gOpenFileImg[0].src;
  507.       else if(gCurrImageObj.src == gFileImg[1].src)
  508.          gCurrImageObj.src = gFileImg[0].src;
  509.    }
  510.  
  511.    gCurrImageObj = imageObj;
  512. }
  513.  
  514. //-------------------------------------------------------------------------------
  515. // this is a recursive function.
  516.  
  517. function searchNode(nodeList, nID)
  518. {
  519.    var node;
  520.    var i;
  521.  
  522.    for(i = 0; i < nodeList.length; i++)
  523.    {
  524.       if(nodeList[i].nID == nID)
  525.          return nodeList[i];
  526.       else if(nodeList[i].children.length > 0)
  527.       {
  528.          node = searchNode(nodeList[i].children, nID);
  529.          if(node != null)
  530.             return node;
  531.       }
  532.    }
  533.  
  534.    return null;
  535. }
  536.  
  537. //-------------------------------------------------------------------------------
  538.  
  539. function initialize()
  540. {
  541.     // PLNOTE: Netscape will not have collasable contents - will probably work in 
  542.     // Netscape if you define gBrowser=NN but not worth the bother...
  543.     if (navigator.appName == "Microsoft Internet Explorer")
  544.         gBrowser = IE;
  545.     else if (navigator.appName == "Netscape"  && navigator.appVersion.substr(0,1) != "5")
  546.         gBrowser == NN;
  547.  
  548.    // display list.
  549.    displayList(gNodeList, 0, 0);
  550.    // create dummy layer on the bottom so NN will have correct scrolling height.
  551.    if(gBrowser == NN)
  552.       document.write('<layer id="dummy" top=' + gnHiddenTop  + ' visibility="hide">\n');
  553.    // select first item on the list.
  554.    if(gNodeList.length > 0)
  555.       parent.nav.updateContents(parent.nav.gCurrPage);
  556. }
  557.  
  558. //-------------------------------------------------------------------------------
  559. //-------------------------------------------------------------------------------
  560. //-------------------------------------------------------------------------------
  561. //-------------------------------------------------------------------------------
  562. //-------------------------------------------------------------------------------
  563.  
  564. function LoadContents()
  565. {
  566.  
  567.     var nNodeID = 1;
  568.     var tmpList = new Array;
  569.  
  570.     gNodeList[00] = new list('<NOBR><B><font size=2 color="black" face="Helvetica">Getting Started</font></B></NOBR>', 0, 0, 0);   
  571.     gNodeList[01] = new list("Introducing Canvas", 1, 8, null, nNodeID++);
  572.     gNodeList[02] = new list("Drawing Basics in Canvas", 9, 18, null, nNodeID++);
  573.     gNodeList[03] = new list("Drawing simple illustrations", 19, 28, null, nNodeID++);
  574.     gNodeList[04] = new list("Introduction to SpriteEffects", 29, 34, null, nNodeID++);
  575.     gNodeList[05] = new list("Introduction to image editing", 35, 46, null, nNodeID++);
  576.     gNodeList[06] = new list("Page Layout & typography", 47, 62, null, nNodeID++);
  577.     gNodeList[07] = new list("Web publishing", 63, 72, null, nNodeID++);
  578.     gNodeList[08] = new list("Introduction", 73, 76, null, nNodeID++);
  579.  
  580.     gNodeList[09] = new list('<NOBR><B><font size=2 color="black" face="Helvetica">Documents & Setup</font></B></NOBR>', 0, 0, 0);
  581.     gNodeList[10] = new list("Running Canvas", 77, 92, null, nNodeID++);
  582.     gNodeList[11] = new list("Document basics", 93, 118, null, nNodeID++);
  583.     gNodeList[12] = new list("Document setup", 119, 130, null, nNodeID++);
  584.     gNodeList[13] = new list("Document layout", 131, 144, null, nNodeID++);
  585.     gNodeList[14] = new list("File and data exchange", 145, 178, null, nNodeID++);
  586.     gNodeList[15] = new list("Web publishing", 179, 220, null, nNodeID++);
  587.     gNodeList[16] = new list("Customizing Canvas", 221, 244, null, nNodeID++);
  588.  
  589.     gNodeList[17] = new list('<NOBR><B><font size=2 color="black" face="Helvetica">Objects & Attributes</font></B></NOBR>', 0, 0, 0);
  590.     gNodeList[18] = new list("Working with objects", 245, 296, null, nNodeID++);
  591.     gNodeList[19] = new list("Macro objects and clip art", 297, 302, null, nNodeID++);
  592.     gNodeList[20] = new list("Inks: colors and patterns", 303, 332, null, nNodeID++);
  593.     gNodeList[21] = new list("Strokes: outline effects", 333, 354, null, nNodeID++);
  594.     gNodeList[22] = new list("SpriteLayer effects", 355, 378, null, nNodeID++);
  595.     gNodeList[23] = new list("Using SpriteEffects", 379, 396, null, nNodeID++);
  596.  
  597.     gNodeList[24] = new list('<NOBR><B><font size=2 color="black" face="Helvetica">Drawing & Vector Effects</font></B></NOBR>', 0, 0, 0);
  598.     gNodeList[25] = new list("Drawing basics", 397, 418, null, nNodeID++);
  599.     gNodeList[26] = new list("Drawing and editing paths", 419, 446, null, nNodeID++);
  600.     gNodeList[27] = new list("Precision drawing and dimensioning", 447, 460, null, nNodeID++);
  601.     gNodeList[28] = new list("Vector effects", 461, 487, null, nNodeID++);
  602.  
  603.     gNodeList[29] = new list('<NOBR><B><font size=2 color="black" face="Helvetica">Text & Typography</font></B></NOBR>', 0, 0, 0);
  604.     gNodeList[30] = new list("Text entry and layout", 489, 512, null, nNodeID++);
  605.     gNodeList[31] = new list("Text editing and proofing", 513, 528, null, nNodeID++);
  606.     gNodeList[32] = new list("Formatting text", 529, 566, null, nNodeID++);
  607.     gNodeList[33] = new list("Using type styles", 567, 572, null, nNodeID++);
  608.     gNodeList[34] = new list("Type effects", 573, 586, null, nNodeID++);
  609.  
  610.     gNodeList[35] = new list('<NOBR><B><font size=2 color="black" face="Helvetica">Painting & Image Editing</font></B></NOBR>', 0, 0, 0);
  611.     gNodeList[36] = new list("Painting and image-editing", 587, 632, null, nNodeID++);
  612.     gNodeList[37] = new list("Scanning, sizing, and tracing images", 633, 650, null, nNodeID++);
  613.     gNodeList[38] = new list("Selections and channels", 651, 682, null, nNodeID++);
  614.     gNodeList[39] = new list("Image adjustment and correction", 683, 706, null, nNodeID++);
  615.     gNodeList[40] = new list("Image filters and effects", 707, 726, null, nNodeID++);
  616.     gNodeList[41] = new list("Image proxies", 727, 734, null, nNodeID++);
  617.  
  618.     gNodeList[42] = new list('<NOBR><B><font size=2 color="black" face="Helvetica">Automation</font></B></NOBR>', 0, 0, 0);
  619.     gNodeList[43] = new list("Sequences", 735, 742, null, nNodeID++);
  620.     gNodeList[44] = new list("Writing Scripts for Canvas", 743, 758, null, nNodeID++);
  621.  
  622.     gNodeList[45] = new list('<NOBR><B><font size=2 color="black" face="Helvetica">----</font></B></NOBR>', 759, 773, null, nNodeID++);
  623.     gNodeList[46] = new list("Glossary", 759, 773, null, nNodeID++);
  624. }